//package com.xcc.configure;
//
//
//import java.sql.SQLException;
//
//import javax.sql.DataSource;
//
//import org.apache.ibatis.session.SqlSessionFactory;
//import org.mybatis.spring.SqlSessionFactoryBean;
//import org.mybatis.spring.SqlSessionTemplate;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Qualifier;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.Primary;
//import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
//import org.springframework.jdbc.datasource.DataSourceTransactionManager;
//
//import com.alibaba.druid.pool.DruidDataSource;
//
//
//
//
//@Configuration
//public class DataSourcesConfig {
//	
//	 private static final Logger LOGGER = LoggerFactory.getLogger(DataSourcesConfig.class);
//	 
//	    @Value("${spring.datasource.driverClassName}")
//	    private String driverClassName;
//	    @Value("${spring.datasource.url}")
//	    private String url;
//	    @Value("${spring.datasource.username}")
//	    private String username;
//	    @Value("${spring.datasource.password}")
//	    private String password;
//	    @Value("${spring.datasource.initialSize}")
//	    private int initialSize;
//	    @Value("${spring.datasource.minIdle}")
//	    private int minIdle;
//	    @Value("${spring.datasource.maxActive}")
//	    private int maxActive;
//	    @Value("${spring.datasource.maxWait}")
//	    private int maxWait;
//	    @Value("${spring.datasource.validationQuery}")
//	    private String validationQuery;
//	    @Value("${spring.datasource.testOnBorrow}")
//	    private boolean testOnBorrow;
//	    @Value("${spring.datasource.testOnReturn}")
//	    private boolean testOnReturn;
//	    @Value("${spring.datasource.testWhileIdle}")
//	    private boolean testWhileIdle;
//	    @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
//	    private int timeBetweenEvictionRunsMillis;
//	    @Value("${spring.datasource.minEvictableIdleTimeMillis}")
//	    private int minEvictableIdleTimeMillis;
//	    @Value("${spring.datasource.removeAbandoned}")
//	    private boolean removeAbandoned;
//	    @Value("${spring.datasource.removeAbandonedTimeout}")
//	    private int removeAbandonedTimeout;
//	    @Value("${spring.datasource.logAbandoned}")
//	    private boolean logAbandoned;
//	    @Value("${spring.datasource.filters}")
//	    private String filters;
//	    @Value("${spring.datasource.poolPreparedStatements}")
//	    private boolean poolPreparedStatements;
//	    @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")
//	    private int maxPoolPreparedStatementPerConnectionSize;
//	 
//	    @Bean
//	    @Primary
//	    public DataSource dataSource() {
//	        DruidDataSource datasource = new DruidDataSource();
//	 
//	        datasource.setDriverClassName(driverClassName);
//	        datasource.setUrl(url);
//	        datasource.setUsername(username);
//	        datasource.setPassword(password);
//	        //其它配置
//	        datasource.setInitialSize(initialSize);
//	        datasource.setMinIdle(minIdle);
//	        datasource.setMaxActive(maxActive);
//	        datasource.setMaxWait(maxWait);
//	        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
//	        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
//	        datasource.setValidationQuery(validationQuery);
//	        datasource.setTestWhileIdle(testWhileIdle);
//	        datasource.setTestOnBorrow(testOnBorrow);
//	        datasource.setTestOnReturn(testOnReturn);
//	        datasource.setPoolPreparedStatements(poolPreparedStatements);
//	        datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
//	        try {
//	            datasource.setFilters(filters);
//	        } catch (SQLException e) {
//	          
//	        }
//	        return datasource;
//	    }
//
//	
//	    @Bean(name = "sqlSessionFactory")
//		@Primary
//		public SqlSessionFactory sqlSessionFactory() throws Exception {
//			SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
//			bean.setDataSource(dataSource());
//			bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
//			return bean.getObject();
//		}
//
//
//		@Bean(name = "TransactionManager")
//		@Primary
//		public DataSourceTransactionManager transactionManager() {
//			return new DataSourceTransactionManager(dataSource());
//		}
//
//		@Bean(name = "sqlSessionTemplate")
//		@Primary
//		public SqlSessionTemplate sqlSessionTemplate(@Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
//			return new SqlSessionTemplate(sqlSessionFactory);
//		}
//	
//	
//
//}
